package cn.gok.common.config;

import com.github.pagehelper.PageHelper;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.stereotype.Component;

/**
 * @author: DxlinY
 * @apiNote: 日志切面
 * @date: 2020/9/25
 * @time: 9:33
 */
@Aspect
@Slf4j
@Component
public class SystemAop {

    /**
     * 切面填充系统日志
     *
     * @param pj
     * @return
     */
    @Around(value = "@annotation(cn.gok.common.config.SystemLog)")
    public Object syslogPrint(ProceedingJoinPoint pj) {
        Object result = null;
        try {
            result = pj.proceed();
            MethodSignature methodSignature = (MethodSignature) pj.getSignature();
            log.info("方法-->{}", methodSignature);
            log.info("参数-->{}", pj.getArgs());
            log.info("返回值-->{}", result);
        } catch (Throwable throwable) {
            log.error("{}->系统错误{}", this.getClass(), throwable.getMessage());
        }
        return result;
    }

//    /**
//     * 分页统一处理切面
//     *
//     * @param pj
//     * @return
//     */
//    @Around(value = "@annotation(cn.gok.common.config.PageService)")
//    public Object pageListAop(ProceedingJoinPoint pj) {
//        Object result = 0;
//        try {
//            Object[] args = pj.getArgs();
//            if (args[0].getClass().getTypeName().equals("int") && args[1].getClass().getTypeName().equals("int")) {
//                PageHelper.startPage((int) args[0], (int) args[1]);
//                result = pj.proceed();
//            }
//
//        } catch (Throwable throwable) {
//            throwable.printStackTrace();
//        }
//        return result;
//    }

}
